Thực đơn
Ngăn_xếp Kiểu dữ liệu trừu tượng ngăn xếpMột ngăn xếp là một cấu trúc dữ liệu dạng thùng chứa (container) của các phần tử (thường gọi là các nút (node)) và có hai phép toán cơ bản: push and pop. Push bổ sung một phần tử vào đỉnh (top) của ngăn xếp, nghĩa là sau các phần tử đã có trong ngăn xếp. Pop giải phóng và trả về phần tử đang đứng ở đỉnh của ngăn xếp. Trong stack, các đối tượng có thể được thêm vào stack bất kỳ lúc nào nhưng chỉ có đối tượng thêm vào sau cùng mới được phép lấy ra khỏi stack.
Ngoài ra, stack cũng hỗ trợ một số thao tác khác:
Trong ngôn ngữ máy tính hiện nay, một ngăn xếp thường được dùng với các phép toán "push" và "pop". Độ dài (số phần tử) của ngăn xếp cũng là một tham số cần thiết của nó. Đôi khi cần tới một phép toán chỉ cần lấy giá trị của phần từ trên đỉnh ngăn xếp mà không xóa nó khỏi ngăn xếp (peak).
Sau đây là đoạn mã giả để bổ sung, loại bỏ, tính độ dài, và lấy giá trị phần tử ở đỉnh của ngăn xếp.
record Node { data // The data being stored in the node next // A reference to the next node; null for last node}
record Stack { Node stackPointer // points to the 'top' node; null for an empty stack}
function push(Stack stack, Node newNode) { // push node onto Stack newNode.next:= Stack.stackPointer stack.stackPointer:= newNode}
function pop(Stack stack) { // increase the stack pointer and return 'top' node // You could check if stack.stackPointer is null here. // If so, you may wish to error, citing the stack underflow. node:= stack.stackPointer stack.stackPointer:= stack.stackPointer.next return node}
function peak(Stack stack) { // return 'top' node return stack.stackPointer}
function length(Stack stack) { // return the amount of nodes in the stack length:= 0 node:= stack.stackPointer while node not null { length:= length + 1 node:= node.next } return length}
Thực đơn
Ngăn_xếp Kiểu dữ liệu trừu tượng ngăn xếpLiên quan
Ngăn xếpTài liệu tham khảo
WikiPedia: Ngăn_xếp http://24bytes.com/stack.html http://www.absint.com/stackanalyzer http://research.avayalabs.com/project/libsafe/ http://www.mycplus.com/utilitiesdetail.asp?iPro=1 http://www.ece.cmu.edu/~koopman/stack_computers/in... http://compilers.cs.ucla.edu/avrora/stack.html http://www.cs.ucla.edu/~palsberg/paper/sas03.pdf http://www.cs.utah.edu/~regehr/stacktool http://web-cat.cs.vt.edu/AlgovizWiki/Stacks https://commons.wikimedia.org/wiki/Category:Stack_...